package sgeb;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Controlador ligas clase
 *
 * @author Pablo Torres ALba
 */
public class ControlLigas implements ActionListener {

    private VistaAdmin vistaAdministrativo;
    private String[] datosLiga;

    public ControlLigas(VistaAdmin vista) {
	this.vistaAdministrativo = vista;
    }

    public int altaLiga(String nombre, String categoria, int nEquipos) {
	Liga nuevaLiga;
	nuevaLiga = new Liga(nombre, categoria, nEquipos);
	nuevaLiga.altaLiga();
	return 0;
    }

    public String[] consultaLiga(String nombre) {
	try {
	    String[] datosLiga = new String[4];
	    Liga ligaConsultada = new Liga();
	    ligaConsultada.consultaLiga(nombre);

	    datosLiga[0] = Integer.toString(ligaConsultada.GetId());
	    datosLiga[1] = ligaConsultada.GetNombre();
	    datosLiga[2] = ligaConsultada.GetCategoria();
	    datosLiga[3] = Integer.toString(ligaConsultada.getNEquipos());

	    if (datosLiga[1].equals(null)) {
		datosLiga = null;
	    }
	    return datosLiga;
	} catch (NullPointerException e) {
	    return null;
	}
    }

    public boolean bajaLiga(int id) {
	return new Liga().bajaLiga(id);
    }

    public boolean modificaLiga(int liga_id, String nombre, String categoria, int nEquipos) {
	return new Liga().modificarLiga(liga_id, nombre, categoria, nEquipos);
    }

    public String[] GetClasificacionLiga(int liga_id) {
	return new Liga().GetClasificacion(liga_id);
    }

    public boolean insertarEquipoEnLiga(int ligaid, int equipoid) {

	return true;
    }

    public void iniciar() {
	this.vistaAdministrativo.setVisible(true);
	this.vistaAdministrativo.LigaGuardar.setActionCommand("Guardar liga");
	this.vistaAdministrativo.botonBuscarLiga.setActionCommand("Buscar liga");
	this.vistaAdministrativo.botonBuscarLiga1.setActionCommand("Buscar liga clasificacion");
	this.vistaAdministrativo.LigaBorrar.setActionCommand("Borrar liga");

	this.vistaAdministrativo.botonBuscarLiga.addActionListener(this);
	this.vistaAdministrativo.botonBuscarLiga1.addActionListener(this);
	this.vistaAdministrativo.LigaBorrar.addActionListener(this);
	this.vistaAdministrativo.LigaGuardar.addActionListener(this);

    }

    public void actionPerformed(ActionEvent e) {
	String comando = e.getActionCommand();
	if (comando.equals("Guardar liga")) {
	    //Nueva liga
	    if (this.vistaAdministrativo.ultimoBotonPulsado() == 8) {
		String nombre;
		String categoria;
		int nequipos;
		nombre = this.vistaAdministrativo.LigaNombre.getText();
		categoria = String.valueOf(this.vistaAdministrativo.LigaCategoria.getSelectedItem());
		nequipos = Integer.parseInt(this.vistaAdministrativo.LigaNumEquipos.getText());
		Liga liga = new Liga(nombre, categoria, nequipos);

		if (liga.altaLiga()) {
		    this.vistaAdministrativo.insertarPanel(this.vistaAdministrativo.PanelLigaGuardada);
		}
	    } //Modificar liga
	    else if (this.vistaAdministrativo.ultimoBotonPulsado() == 7) {
		String nombre;
		String categoria;
		int nequipos;
		nombre = this.vistaAdministrativo.LigaNombre.getText();
		categoria = String.valueOf(this.vistaAdministrativo.LigaCategoria.getSelectedItem());
		nequipos = Integer.parseInt(this.vistaAdministrativo.LigaNumEquipos.getText());
		Liga liga = new Liga(nombre, categoria, nequipos);

		if (liga.modificarLiga(Integer.parseInt(datosLiga[0]), nombre, categoria, nequipos)) {
		    this.vistaAdministrativo.insertarPanel(this.vistaAdministrativo.PanelLigaGuardada);
		}
	    }

	} else if (comando.equals("Buscar liga")) {
	    String nombre = this.vistaAdministrativo.LigaTextField.getText();
	    datosLiga = this.consultaLiga(nombre);
	    if (datosLiga != null) {
		this.vistaAdministrativo.insertarPanel(vistaAdministrativo.PanelDatosLiga);
		this.vistaAdministrativo.LigaNombre.setText(datosLiga[1]);
		this.vistaAdministrativo.LigaNumEquipos.setText(datosLiga[3]);
		for (int i = 0; i < this.vistaAdministrativo.LigaCategoria.getItemCount(); i++) {
		    if (this.vistaAdministrativo.LigaCategoria.getItemAt(i).equals(datosLiga[2])) {
			this.vistaAdministrativo.LigaCategoria.setSelectedIndex(i);
		    }
		}
		String[] equipos = new Liga().GetEquipos(Integer.parseInt(datosLiga[0]));
		if (equipos != null) {
		    this.vistaAdministrativo.ListaEquipos.setListData(equipos);
		} else {
		    String[] vacia = new String[1];
		    vacia[0] = "";
		    this.vistaAdministrativo.ListaEquipos.setListData(vacia);
		}
	    } else {
		this.vistaAdministrativo.insertarPanel(vistaAdministrativo.PanelBuscarLigaNoEncontrado);
	    }
	} else if (comando.equals("Borrar liga")) {
	    new Liga().bajaLiga(Integer.parseInt(datosLiga[0]));
	    this.vistaAdministrativo.cleanCamposLiga();
	    this.vistaAdministrativo.insertarPanel(this.vistaAdministrativo.PanelLigaBorrada);
	} else if (comando.equals("Buscar liga clasificacion")) {
	    String nombre = this.vistaAdministrativo.LigaTextField1.getText();
	    datosLiga = this.consultaLiga(nombre);
	    if (datosLiga != null) {
		String[] clasificacion = new Liga().GetClasificacion(Integer.parseInt(datosLiga[0]));
		this.vistaAdministrativo.insertarPanel(this.vistaAdministrativo.PanelClasificacionLiga);
		if (clasificacion != null) {
		    this.vistaAdministrativo.ClasificacionLiga.setListData(clasificacion);
		}

	    } else {
		this.vistaAdministrativo.insertarPanel(vistaAdministrativo.PanelBuscarLigaNoEncontrado);
	    }
	}
    }
}
